unit SmallStruct.Resource;

interface

uses Types,
  Classes,
  SmallStruct.Core;

const
  SS_RESOURCE_REGISTER_TABLE_LOADER_NAME: string = 'RESOURCE_REGISTER_TABLE_LOADER';
  SS_RESOURCE_LOADER_NAME: string = 'RESOURCE_LOADER';

type
  ISSResource = interface(ISSObject)
    ['{8C784EBD-369A-44E9-BAC0-0345657A75D3}']
    function GetResource: TStream;
  end;

  ISSResourceLoader = interface(ISSObject)
    ['{CEA0C419-C1DE-41EA-B8C6-A3AFE6EA7AEB}']
    function LoadResource(const AResourceName: string): ISSResource; overload;
    procedure LoadResource(AObjectContainer: ISSObjectContainer); overload;
  end;

  ISSResourceTable = interface(ISSObject)
    ['{8AD4B907-BCAB-42DD-8509-38F2D19B6220}']
    function QueryResource(AObjectName: string): ISSObjectContainer;
  end;

  ISSResourceRegisterTable = interface(ISSObject)
    ['{3DFAACCD-4FEB-4C37-8246-37EE248696AA}']
    function QueryResource(AObjectName: string; var ASourceNameArray: TStringDynArray): Boolean;
  end;

  ISSResourceRegisterTableLoader = interface(ISSObject)
    ['{F3F8BDE4-6FCF-405C-860F-ECDE6047DE0F}']
    procedure LoadResourceRegisterTable(AResourceRegisterTable: TStringList);
  end;

implementation

end.
